package com.itheima.tlais_web_management.controller;

import com.itheima.tlais_web_management.pojo.Dept;
import com.itheima.tlais_web_management.pojo.Result;
import com.itheima.tlais_web_management.service.DeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@Slf4j
@Scope("prototype")
@RestController("deptcontroller")
@RequestMapping("depts")
public class DeptController {

    @Autowired
    private DeptService deptService;


    /**
     * 查询部门数据
     * @return
     */
//    @RequestMapping(value = "/depts",method = RequestMethod.GET)
    @GetMapping
    public Result list(){
        log.info("查询全部部门数据");

        /**
         * 在 controller 调用 service 中的一个查询数据的 list() 方法 ，这个 list() 方法会返回数据 ” 这个数据就是需要的数据 “ ，然后这个
         * 数据来自于 Mapper 中的一个 SQL 接口，这个接口是一个 从数据库查询数据 的接口，接口将 查询到的数据返回给 list() 方法，list() 方法
         * 再将 查询到的数据返回给 controller。
         */

        //调用deptService查询部门数据
        List<Dept> deptList = deptService.list();

        return Result.success(deptList);
    }

    /**
     * 删除部门数据
     */

    @DeleteMapping("/{id}")
    public Result delete(@PathVariable Integer id) throws Exception {
        log.info("根据id删除部门{}");

        deptService.delete(id);

        return Result.success();
    }

    /**
     * 新增部门
     */

    @PostMapping
    public Result add(@RequestBody Dept dept){
        log.info("新增部门");

        deptService.add(dept);

        return Result.success();
    }


//    /**
//     * 修改部门
//     * @param dept
//     * @return
//     */
//    @PutMapping
//    public Result updateDepartment(@RequestBody Dept dept) {
//        boolean updated = deptService.updateDepartment(dept);
//
//        if (updated){
//            return Result.error("2");
//        }else {
//            return Result.success();
//        }
//    }

    @GetMapping("/{id}")
    public Result updatelist(@PathVariable Integer id){
        log.info("根据id查询部门");

        Dept dept = deptService.updatelist(id);

        return Result.success(dept);
    }

    @PutMapping
    public ResponseEntity<Integer> update(@RequestBody Dept dept) {
        int result = deptService.updateDepartment(dept);
        if (result > 0) {
            return ResponseEntity.ok(result);
        } else {
            return ResponseEntity.notFound().build();
        }
    }

}
